﻿// SharpDevelop samples
// Copyright (c) 2014, AlphaSierraPapa
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this list
//   of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice, this list
//   of conditions and the following disclaimer in the documentation and/or other materials
//   provided with the distribution.
//
// - Neither the name of the SharpDevelop team nor the names of its contributors may be used to
//   endorse or promote products derived from this software without specific prior written
//   permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &AS IS& AND ANY EXPRESS
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


using System;
using System.ComponentModel;
using System.Windows.Input;

using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Widgets;
using Microsoft.Win32;

namespace ICSharpCode.NAnt.Gui
{
	public partial class NAntAddInOptionsView : OptionPanel, INotifyPropertyChanged
	{
		string nantFileName;
		
		public NAntAddInOptionsView()
		{
			InitializeComponent();
			this.nantFileName = AddInOptions.NAntFileName;
			this.NAntArguments = AddInOptions.NAntArguments;
			this.Quiet = AddInOptions.Quiet;
			this.ShowLogo = AddInOptions.ShowLogo;
			this.Debug = AddInOptions.DebugMode;
			this.Verbose = AddInOptions.Verbose;
			this.BrowseCommand = new RelayCommand(Browse);
			this.DataContext = this;
		}
		
		public ICommand BrowseCommand { get; private set; }
		
		public string NAntFileName {
			get { return nantFileName; }
			set {
				nantFileName = value;
				base.RaisePropertyChanged(() => NAntFileName);
			}
		}
		
		public string NAntArguments { get; set; }
		public bool Quiet { get; set; }
		public bool Verbose { get; set; }
		public bool ShowLogo { get; set; }
		public bool Debug { get; set; }
		
		void Browse()
		{
			var dialog = new OpenFileDialog();
			dialog.DefaultExt = ".exe";
			dialog.Filter = StringParser.Parse("${res:SharpDevelop.FileFilter.ExecutableFiles}|*.exe|${res:SharpDevelop.FileFilter.AllFiles}|*.*");
			if (dialog.ShowDialog() == true) {
				NAntFileName = dialog.FileName;
			}
		}
		
		public override bool SaveOptions()
		{
			AddInOptions.NAntFileName = nantFileName;
			AddInOptions.NAntArguments = NAntArguments;
			AddInOptions.Quiet = Quiet;
			AddInOptions.DebugMode = Debug;
			AddInOptions.Verbose = Verbose;
			AddInOptions.ShowLogo = ShowLogo;
			
			return true;
		}
	}
}